MISP BSP后期研究

研究内容

  1. vxWorks启动过程研究
  2. END网络驱动研究

ET0无法发送数据包问题

问题:通过ET1端口可以正常下载(这是现在所有人使用的下载方式,即通过交换机的1端口下载),通过ET0端口不可以正常下载(并不是不可以下载,ET0为调试机器上靠近CPU的一个单独接口)。

问题细节:ET0端口发送数据包存在问题,包括答辩前的关于ET0口无法发送数据包也可以看做是这个问题前期探讨。在重新学习了END驱动的相关知识之后,本周对这个问题进行了深入分析。数据包传送到ET,ETC,DMA层都是正确的,如果在dma_txfast()函数中加入一段延迟或者打印函数printf(),那么数据包就能够正确的发送出去。另外一方面,在加载vxWorks镜像的时候,如果从host PC发给交换机一个mac地址,那么FTP就能够建立,数据包就能够发送出来。

问题分析:以上测试的代码为郭次荣发给我的实习答辩课题使用的代码,也包括svn服务器上版本号位3508的代码(这份代码vxWorks的下载由ET0切换到了ET1,蔡培丰提交)。在和郭次荣,蔡培丰两位师傅讨论了这个问题之后,初步分析如下:

  1. <1> 原来编译从ET0下载的bootrom,使用的是旧版的Tornado(我也不知道旧版的和现在的有什么区别,反正我现在使用的Tornado不是旧版)。如果切换到新版本的Tornado,当时也存在从ET0无法下载的问题。(蔡培丰提供)
  2. <2> 在dma_txfast()函数中加入延时或者printf()函数能够正确发送数据包,是否是因为vxWorks的任务调度方面出了问题。(郭次荣提供)。我也试着一直shell到bootrom中,但是涉及的问题太多,一时未能成功。另一方面,关于vxWorks任务调度方面的知识自己还比较缺乏,凭一己之力无法进行深入研究。

最近重新看去年的记录,当时可能对ET0,ET1端口的硬件连接不是很了解。其实,ET1是CPU的一个MAC core,然后连接到了MAC芯片(可能和CPU集成在一个SOC上)上,所以在Bootrom中,需要调通MAC芯片的驱动,这样ET1就能够联通。至于上面提到的ET0没有调试OK的问题,可能就成了千古谜案,以后也不会再去探究。(2012.1.11)

MIPS BSP的简化

这次简化,删除的文件主要有:

  1. 文件系统,Flash驱动部分
  2. if_robo.c,et_virt.c等涉及到robo选型的部分
  3. 一些其他的utility性质的文件,例如bitfuncs.h等等

最后工程文件的内容包括:

  1. 基本的主干文件,romInit.s,bootInit.c,bootConfig.c等
  2. END驱动部分文件
  3. Cache驱动部分
  4. PCI驱动部分(涉及到PCI和SB两种总线的很多内容)
  5. 串口驱动部分
  6. ftp应用部分
  7. 一些utility性质的文件,例如sysLib.c等等